
public class LinkList {
	public static void main(String argv[]){
		System.out.println("exemplu de lista de legatura in Java");
		LinkList l = new LinkList();
		l.add(new Object());
		l.add("Hello!");
		System.out.println("O lista cu toate elementele.");
		l.print();
		if(l.lookup("Hello"))
			System.err.println("mergeeee!!!");
		else
			System.err.println("Lookup-ul nu merge.");
	}
	/*un TNod stocheaza un nod sau un obiect in lista sa legata*/
	class TNode{
		TNode next;
		Object data;
		TNode(Object o){
			data = o;
			next = null;
		}
	}
	protected TNode root;
	protected TNode last;
	/**
	 * adaufa un obiect la sfarsitul listei. Updateaza referinta "next"
	 * in finalul precedent, pentru a referi nodul nou.
	 * Updateaza "last" pentru a referi catre nodul nou
	 * */
	void add(Object o){
		last.next = new TNode(o);
		last = last.next;
	}
	
	public boolean lookup(Object o){
		for(TNode p = root.next; p !=null; p = p.next)
			if(p.data == o || p.data.equals(o))
				return true;
		return false;
	}
	void print(){
		for(TNode p=root.next;p!=null;p=p.next)
			System.out.println("TNode"+p+"="+p.data);
	}
	
}
